const path = require('path');
const fs = require('fs').promises;

async function loadParserScript(scriptRelativePath) {
  try {
    // 1. 转换为绝对路径（避免相对路径混乱）
    const t = path.resolve(__dirname);
    console.log(t);
    const ss = path.resolve(__dirname, '..');
    console.log(ss);
    const scriptAbsPath = path.resolve(__dirname, scriptRelativePath);
    console.log(scriptAbsPath);
    // 2. 检查脚本文件是否存在
    await fs.access(scriptAbsPath);

    // 3. 动态加载脚本模块（Node.js require支持绝对路径）
    const parserModule = require(scriptAbsPath);
    console.log(parserModule);
    // 4. 验证脚本是否实现统一接口（必须导出parse方法）
    if (typeof parserModule.parse !== 'function') {
      throw new Error(`解析脚本接口不规范：${scriptRelativePath} 需导出parse()方法`);
    }

    console.log(`脚本加载成功：${scriptAbsPath}`);
    return parserModule;

  } catch (error) {
    if (error.code === 'ENOENT') {
      throw new Error(`解析脚本不存在：${scriptRelativePath}`);
    }
    throw new Error(`脚本加载失败：${error.message}`);
  }
}

module.exports = { loadParserScript };